`timescale 100ns / 100ps

                       
module tb_mdio
    (   
        output logic                    clk
    );
//*********************** КОНСТАНТЫ ****************************************************************

//*********************** СОЗДАНИЕ И ОПИСАНИЕ ПЕРЕМЕННЫХ *******************************************
    logic reset_n;
    
    logic [4:0]         phy_addr;
    logic [4:0]         reg_addr;
    logic [15:0]        data_wr;
    logic               set;
    
    logic               mdc;
    logic               mdio;
    logic               wre;


//********************** БЛОК НЕПРЕРЫВНЫХ НАЗНАЧЕНИЙ ASSIGN ****************************************


//********************** ОПИСАНИЕ ПОДКЛЮЧАЕМЫХ БЛОКОВ ***********************************************

mdio 
// #(
    // .CLK_FREQ   (),
    // .MDC_FREQ   ()
// )
mdio_inst
(   
    .reset_n    (reset_n),
    .clk        (clk),
    
    .set        (set),
    .phy_addr   (phy_addr),
    .reg_addr   (reg_addr), 
    .data_wr    (data_wr), 
    .mdc        (mdc), 
    .mdio       (mdio), 
    .wre        (wre)
);
  
// ********************* БЛОКИ ИНИЦИАЛИЗАЦИИ *******************************************************
    initial begin
        reset_n = 0;
    #25  reset_n = 1;
    end
    
    initial begin        // CLK
        clk = 0;
        forever #5ns clk = ~clk;
    end
    
    initial begin        // CLK
        set = 0;
        phy_addr = 0;
        reg_addr = 0;
        data_wr = 0;
        #250;
        set = 1;
        #250;
        set = 0;        
        
    end    
endmodule